redesign and rewrite is good!
One funny thing I've noticed over the years is the more you get attached to a particular design the less you notice it's drawbacks and the more you like it, regardless of either quality or applicability to a particular purpose.
A way to avoid this set of problems I've thought of a couple of years back is to not to like any design by default and as soon as it starts to annoy do a redesign or a rewrite.
So here are the preliminary results:
+ after a couple of rewrites one instinctively motivated to write small and clear code.
+ each consecutive rewrite/redesign is faster and faster.
+ the designer gets a deeper and more practical view of the problem.
+ good for teaching design.
+ after a couple of cycles there is a sufficient codebase to combine the strongs of several approaches without a major rewrite.
+ forces a certain concise and flexible design style.
- this approach (in it's current state) is not suited for teems with varied experience levels.
- may not be deterministic at first.
One other thing I've noticed is that at first it takes more time that the usual approaches, but at the later stages there is virtually no time spent on hacking design bugs out and fixing all that depended on them in a crunch.
Agile is a similar set of approaches, but the difference here is that on each stage there is mainly a forced redesign and rewrite, targeting solving the problem differently and not reusing code.
A way to avoid this set of problems I've thought of a couple of years back is to not to like any design by default and as soon as it starts to annoy do a redesign or a rewrite.
So here are the preliminary results:
+ after a couple of rewrites one instinctively motivated to write small and clear code.
+ each consecutive rewrite/redesign is faster and faster.
+ the designer gets a deeper and more practical view of the problem.
+ good for teaching design.
+ after a couple of cycles there is a sufficient codebase to combine the strongs of several approaches without a major rewrite.
+ forces a certain concise and flexible design style.
- this approach (in it's current state) is not suited for teems with varied experience levels.
- may not be deterministic at first.
One other thing I've noticed is that at first it takes more time that the usual approaches, but at the later stages there is virtually no time spent on hacking design bugs out and fixing all that depended on them in a crunch.
Agile is a similar set of approaches, but the difference here is that on each stage there is mainly a forced redesign and rewrite, targeting solving the problem differently and not reusing code.
0 Comments:
Post a Comment
<< Home